   This file documents the Elisp package `hm--html-menus'.

   Copyright (C) 1997 Heiko Münkel

   Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

   Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the sections entitled "Distribution" and "General Public License"
are included exactly as in the original, and provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

   Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that the sections entitled "Distribution" and "General
Public License" may be included in a translation approved by the author
instead of in the original English.

License
*******

   Copyright (C) 1993 - 1997 Heiko Münkel, muenkel@tnt.uni-hannover.de

   This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option) any
later version.

   This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

   You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Overview
********

   This document describes the Elisp package *hm--html-menus 5.8*.

   The version of the document is:
$Id: hm-html-mode.texinfo,v 1.12 1997/07/20 06:36:20 muenkel Exp $

   The package provides commands and various popup and pulldown menus
for an HTML mode called "hm--html-mode", a mode for writing HTML pages
for the World Wide Web (WWW).  It also provides a minor mode
("hm--html-minor-mode"), which can be used together with other HTML
major modes, like the psgml-html mode in XEmacs 19.14 or other major
edit modes, like the perl-mode.

   You can easily view the HTML documents by calling the browsers w3 (a
nice elisp package from William M. Perry), Netscape, or Mosaic directly
from the pulldown menu of the mode.

   An integrated (emacs internal) drag and drop interface makes it very
easy to insert links or images, by just clicking on them.

   When appropriate, identical commands work on selected regions.
You'll see the same menu items and can use the same keystrokes, whether
a region is active or not, but if it's active, then the commands are
operating on the region. Therefore, you don't need to learn different
menus or keys for similar functions!

   One major design goal of the package was to make it easier to write a
HTML page, even if you don't know much about HTML. For that I've tried
to put more knowledge about HTML, URL's and so on in it than an SGML
based mode could find out from a DTD file. In most cases the user gets
help to construct a specific link by examples, or by a completion list
with possible input strings. And you can choose between an expert popup
menu and an novice popup menu interactively. The novice menu contains
only the basic HTML elements, so that you're not bothered by the
quantity of different HTML elements. And if you want to use more HTML
elements, then you can easily switch to the expert menus.

   You can configure the html mode with a special configuration file for
your site and with another file specific to a user. Look at the
customization chapter for this, see Customization.

Distribution
************

   The name of the distribution file is
`hm--html-menus-<version>.tar.gz', where <VERSION> is the version
number. The package is part of the XEmacs. You should always find the
latest version of the package on the following ftp server:
     *ftp.tnt.uni-hannover.de* in `/pub/editors/xemacs/contrib'
   You should also find the package in the USA on the ftp server (which
is mirrored on many other servers in the world):
     *sunsite.unc.edu* in `/pub/Linux/apps/editors/emacs'

Contents
========

   The package consists of the following files:

`README'
     Please, read this first.

`README-EMACS-19'
     Some special hints only for GNU Emacs 19 users.

`ANNOUNCEMENT'
     Text of the announcement of this package.

`LSM'
     Entry for the Linux Software Map.

`NEWS'
     The NEWS and Change log file.

`adapt.el'
     Provides (emulates XEmacs) functions for the use of this package
     with GNU Emacs 19.

`drop'
     An xbm file with the drag and drop mouse pointer in the XEmacs.

`dropmsk'
     An xbm file with the mask for the drag and drop mouse pointer in
     the XEmacs.

`hm--html.el'
     Provides functions to write html pages. It defines all commands
     which insert html elements and entities.

`hm--html-indentation.el'
     Provides the lisp code for the indentation.

`hm--html-keys.el'
     Defines the key bindings.

`hm--html-menu.el'
     Provides the menus.

`hm--html-mode.el'
     Provides the functions for the definition of the hm-html-mode and
     the hm-html-minor-mode. This is the main file of the package.

`hm--html-not-standard.el'
     Provides functions to insert some non standard html elements. This
     file is not evaluated by default and it may be a bad idea to use
     it.

`hm--html-configuration.el'
     Configuration file for the html mode. All the user variables are
     defined in this file.

`hm--html-drag-and-drop.el'
     Defines the HTML-specific functions for the drag and drop
     interface.

`hm--date.el'
     Defines the function hm-date, which returns the date in the format
     "day-month-year" like "30-Jun-1993".

`html-view.el'
     Ron Tapia's html-view.el to view html pages in Mosaic. It is
     patched for use with XEmacs.

`internal-drag-and-drop.el'
     Provides the general (html-mode independent) functions of the drag
     and drop interface.

`templates.doc'
     Describes the syntax of the templates provided in the file
     `tmpl-minor-mode.el'

`tmpl-minor-mode.el'
     Provides functions for the tmpl-minor-mode. With this mode you can
     expand templates, which are described in the file
     `templates-syntax.doc' (look at the files
     `command-description.html.tmpl' and `frame.html.tmpl' for
     examples).  Templates can be expanded automatically, if you
     include a file with templates via the html pulldown menu item
     "Templates ..." or with the item "Templates (fixed dirs)...".

`command-description.html.tmpl'
     Template file for the use with the tmpl-minor-mode.

`frame.html.tmpl'
     Template file, provides a simple frame.

`doc/hm--html-mode.texinfo'
     Package documentation in the Texinfo format.

`doc/umlaute.texinfo'
     Texinfo include file for German vowel mutation (deutsche Umlaute).

Installation
************

  1. Put all the *.el files in one of your XEmacs (or emacs) lisp load
     directories (e.g. site-lisp/hm-html-menus).

  2. *For XEmacs only*: Put the files `drop' and `dropmsk' in the
     directory specified by the lisp variable `idd-data-directory'. By
     default it is `<prefix>/lib/xemacs-<version>/etc/idd' (eg: if you
     have installed the XEmacs 19.15 at your site in `/usr/local', then
     it is the directory `/usr/local/xemacs/lib/xemacs-19.15/etc/idd'.

     If you'd like to put the files in another directory, then you must
     set the variable `idd-data-directory' to this directory (eg:
     `(setq idd-data-directory "/usr/local/data")')

  3. Put the following in your .emacs (or default.el or site-init.el):
          (autoload 'hm--html-mode "hm--html-mode" "HTML major mode." t)
          (autoload 'hm--html-minor-mode "hm--html-mode" "HTML minor mode." t)
          (or (assoc "\\.html$" auto-mode-alist)
              (setq auto-mode-alist (cons '("\\.html$" . hm--html-mode)
          				auto-mode-alist)))

          (autoload 'tmpl-expand-templates-in-buffer "tmpl-minor-mode"
            "Expand all templates in the current buffer." t)
          (autoload 'tmpl-expand-templates-in-region "tmpl-minor-mode"
            "Expands the templates in the region from BEGIN to END.
          If BEGIN and END are nil, then the current region is used."
            t)
          (autoload 'tmpl-insert-template-file-from-fixed-dirs "tmpl-minor-mode"
            "Inserts a template FILE and expands it, if `tmpl-automatic-expand' is t.
          This command tries to read the template file from a list of
          predefined directories (look at `tmpl-template-dir-list') and it filters
          the contents of these directories with the regular expression
          `tmpl-filter-regexp' (look also at this variable).
          The command uses a history variable, which could be changed with the
          variable `tmpl-history-variable-name'.

          The user of the command is able to change interactively to another
          directory by entering at first the string \"Change the directory\".
          This may be too difficult for the user. Therefore another command
          called `tmpl-insert-template-file' exist, which doesn't use fixed
          directories and filters."
            t)

          (autoload 'tmpl-insert-template-file "tmpl-minor-mode"
            "Inserts a template FILE and expand it, if `tmpl-automatic-expand' is t.
          Look also at `tmpl-template-dir-list', to specify a default template
          directory.
          You should also take a look at `tmpl-insert-template-file-from-fixed-dirs'
          which has additional advantages (and disadvantages :-).

          ATTENTION: The interface of this function has changed. The old
          function had the argument list (&optional TEMPLATE-DIR AUTOMATIC-EXPAND).
          The variables `tmpl-template-dir-list' and `tmpl-automatic-expand' must
          now be used instead of the args TEMPLATE-DIR and AUTOMATIC-EXPAND."
            t)

          (autoload 'html-view-start-mosaic "html-view" "Start Xmosaic." t)
          (autoload 'html-view-view-buffer
            "html-view"
            "View the current buffer in Xmosaic."
            t)
          (autoload 'html-view-view-file
            "html-view"
            "View a file in Xmosaic."
            t)
          (autoload 'html-view-goto-url
            "html-view"
            "Goto url in Xmosaic."
            t)
          (autoload 'html-view-get-display
            "html-view"
            "Get the display for Xmosaic (i.e. hostxy:0.0)."
            t)

     The above lines assume that you have not already installed another
     html mode. If this isn't true, then you should use the following:
          (setq auto-mode-alist (cons '("\\.html$" . hm--html-mode)
                                      auto-mode-alist))

     instead of:
          (or (assoc "\\.html$" auto-mode-alist)
              (setq auto-mode-alist (cons '("\\.html$" . hm--html-mode)
          			        auto-mode-alist)))
     If you want to use the hm-html-minor-mode together with the
     psgml-html modes, then you should add the following line (works
     only in XEmacs version >= 19.15 and != 20.0):
          (add-hook 'html-mode-hook 'hm--html-minor-mode)

Customization
*************

   You should be able to use the package after its installation without
any further customization. But it contains a lot of user variables to
adapt the package better to your special needs. How to do this is
described in this chapter.

   Since the XEmacs 19.15 and 20.2 a special package can be used for the
customization of lisp packages. This package uses now also this
feature. Therefore you can set all user variables with the help of the
Customize submenu, which can be selected in the Option menu.  If you use
it, the variables will currently be saved in a special customization
file and not in one of the configuration files (see Customization (Configuration) Files)
of this
package. Please look at the `NEWS' file or the info manuals of the
XEmacs to find out more about the customization package.

Customization (Configuration) Files
===================================

   This package uses 3 different files to customize the mode, but you
need not use all of them. Only one of them, the file
`hm--html-configuration.el' is delivered together with the package.
The reason for three different files is to provide the opportunity to
have different customization for the package, the site and the user.
There's also a pulldown menu item to reload all customization files.
The files are described in the following sections.

Where Are All The Customization Variables Defined
-------------------------------------------------

   All variables which can be used to customize the mode are defined in
the package configuration file `hm--configuration.el'. You should take
a look at this file if you don't find how to customize a feature in
this documentation (the documentation of a program is never as complete
as its program code :-).

   This file is searched in one of your lisp load directories. You can
change this by setting the environment variable `HTML_CONFIG_FILE' to
another file. But I don't recommend this.

   *Note*: This file is loaded before the other customization files, so
that its definitions could be overwritten. All variables are set by
`defvar', so that its values could also be overwritten with `setq' in
any standard emacs customization files (e.g. in `.emacs').

Where To Put Site Specific Customization
----------------------------------------

   In general all users at a site are writing their html pages for the
same WWW server. Therefore it is very likely that most of the
customizations are site specific, and only a few are user specific.
However, you don't have to use a site specific customization if you
don't want one.

   If you'd like to make a site specific customization of
`hm--html-mode', it's possible to put it in a special file called
`hm--site-configuration-file.el'. If you do this, you have to set
either the lisp variable `hm--html-site-config-file' or the environment
variable `HTML_SITE_CONFIG_FILE' to the file and its path. If you write
the filename without its extension (.el), emacs tries first to load a
compiled version of the file.

   The environment variables overwrite the lisp variables.

   You can prevent the loading of the site specific customization file
by starting the emacs with the -no-site-file flag.

   You can also put the site specific customization in any standard
emacs customization file like, `default.el'. But an advantage to using
`hm--site-configuration-file.el' is that it is very likely you will be
able to use this file with future versions of the package. I'll try to
make it as backward compatible as possible.

   *Note*: This file is loaded after the package customization file and
before the user customization file.

Where To Put User Specific Customization
----------------------------------------

   User specific customization can be put in the file
`.hm--html-configuration.el', which is searched by default in the home
directory of the user. This can be overwritten by setting either the
environment variable `HTML_USER_CONFIG_FILE' or the lisp variable
`hm--html-user-config-file' to the name of the file and its path. If
you write the filename without its extension (.el), emacs tries first
to load a compiled version of the file.

   If neither the environment variable nor the lisp variable is set, the
variable `init-file-user' will be respected. This means, that you'll
get the `~other-user/.hm--html-configuration.el', if you've started the
emacs with the options `-u other-user'. In all cases, no user specific
customization file will be loaded, if the `-q' option was given to the
emacs.

   You can also put the user specific customization in your `.emacs'.
It's up to you to decide which way is better.

   *Note*: This file is loaded after the package and the site specific
one. Therefore it overwrites all other customization files.

Customization Variables
=======================

   In the following subsections the main customization variables are
described.

User Name/Signature
-------------------

   * `hm--html-username': Your real name. This is used as the name of
     the signature links. You need only specify it if your name in the
     file `/etc/passwd' isn't the one you'd like to see in the html
     files. Otherwise this may be set to `nil'.

   * `hm--html-signature-file': The link used in your signature. In
     general this should be a link to your home page.

Switching Between Expert And Novice Menus
-----------------------------------------

   * `hm--html-expert': If you're a html novice and don't want to be
     bothered with lots of possible html elements, then you should use
     the novice popup menus. For that, set this variable to `nil',
     which is the default. But if you are more familiar with html and
     would like to use more html elements, then you should use the
     expert menus and set this variable to `t'.

HTML Doctype
------------

   * `hm--html-html-doctype-version': The HTML version. This is used in
     the doctype element. Change this if you use non HTML 3.2 elements.
     This package (see version.) defines by default only
     HTML 3.2 elements.

Defaults Used For Generating Links
----------------------------------

   One of the main features of `hm--html-mode' is its easy ways to
insert special links to html pages, ftp servers, news servers and so
on. I think that most people will have their own (this may be site
specific. See Where To Put Site Specific Customization.)
favourite servers, directories and so on.
You may customize the default values and the alists with useful
alternatives, which are used from the mode in the inserting functions
for the links.

Your Favourite HTTP Server
..........................

   * `hm--html-favorite-http-server-host-name': The name of your
     favorite http server host. It must be specified! This variable is
     used in many other variables.

Links to WWW Server
...................

   * `hm--html-html-hostname:port-default': Default hostname with port
     for http links to a HTML server.

   * `hm--html-html-hostname:port-alist': Alist with hostnames and ports
     for http links to HTML servers. It contains useful alternatives.

   * `hm--html-html-path-alist': Alist with directories for the HTML
     server. Each alist element must consist of a number and a directory
     string. The number is used to select the directory during the query
     about the directory for an http link.

Links To Files
..............

   * `hm--html-file-path-alist': Alist with directories for the file
     gateway. Each alist element must consist of a number and a
     directory string. The number is used to select the directory
     during the query about the directory for a file link.

Links To FTP Servers
....................

   * `hm--html-ftp-hostname:port-default': Default hostname with port
     for links to an ftp server. This is for the default FTP server. In
     general you don't need to specify a port for this.

   * `hm--html-ftp-hostname:port-alist': Alist with hostnames and ports
     for links to ftp servers. It contains useful alternatives. In
     general you don't need to specify ports for the ftp servers.

   * `hm--html-ftp-path-alist': Alist with directories for the ftp
     server links. It contains useful alternatives with /pub, /pub/gnu
     and so on. Each alist element must consist of a number and a
     directory string. The number is used to select the directory
     during the query about the directory for an ftp link.

Links To Emacs Info Files
.........................

   * `hm--html-info-hostname:port-default': Default hostname with port
     for the Info gateway.

   * `hm--html-info-hostname:port-alist': Alist with hostnames and ports
     for Info gateways. It contains useful alternatives.

   * `hm--html-info-path-alist': Alist with directories for the Info
     gateway. This may be a list with all of your emacs info
     directories.

Links To Gopher Servers
.......................

   There are a lot of useful gopher information servers on the Internet.
You can access them with a gopher browser or with a WWW browser. In the
latter case you have to use the gopher gateway.

   * `hm--html-gopher-hostname:port-default': Default hostname with port
     for links to the default gopher server.

   * `hm--html-gopher-hostname:port-alist': Alist with hostnames and
     ports for links to gopher servers. It contains useful alternatives.

   * `hm--html-gopher-doctype-default': For gopher links you have to
     specify the doctype. In most cases this should be the string
     \"/1\".  Therefore this is the default doctype, but you can change
     it to another.

   * `hm--html-gopher-doctype-alist': Alist with doctype strings for
     links to a gopher server. The strings \"/1\", \"/11\" and \"/00\"
     are the only doctype strings that I know. Please let me know if
     there are other strings.

   * `hm--html-gopher-anchor-alist': Alist with directories for links to
     a gopher server. It contains useful alternatives for the main
     gopher servers. Each alist element must consist of a number and a
     directory string. The number is used to select the directory
     during the query about the directory for a local program gateway
     link.

Links To WAIS Gateways
......................

   You can either make a link direct to a WAIS server (it may be that
not all WWW browsers support this) or an http link to a server (relay
host) which queries the WAIS server. The variables
`hm--html-wais-hostname:port-default' and `hm--html-wais-hostname'
refer to these relay hosts and the variables
`hm--html-wais-servername:port-default' and
`hm--html-wais-servername:port-alist' refer to the WAIS servers.

   * `hm--html-wais-hostname:port-default': Default hostname of the
     relay host with port for the WAIS gateway.

   * `hm--html-wais-hostname:port-alist': Alist with hostnames of
     possible relay hosts and ports for the WAIS gateway. It contains
     useful alternatives.

   * `hm--html-wais-servername:port-default': Default WAIS servername
     with port for the WAIS gateway.

   * `hm--html-wais-servername:port-alist': Alist with WAIS servernames
     and ports for the WAIS gateway. It contains useful alternatives.

   * `hm--html-wais-path-alist': Alist with directories for the wais
     gateway.

Links To The Mail Gateway
.........................

   The following variables are for customizing the insertion of links
to a mail folder. You need a special server for this, which sends the
email back to the browser.

   * `hm--html-mail-hostname:port-default': Default hostname with port
     for the mail gateway.

   * `hm--html-mail-hostname:port-alist': Alist with hostnames and ports
     for the mail gateway. It contains useful alternatives.

   * `hm--html-mail-path-alist': Alist with directories for the mail
     gateway. In these directories you'll probably find mail folders.
     Each alist element must consist of a number and a directory
     string. The number is used to select the directory during the
     query about the directory for a mail folder link.

Links For Sending Mail
......................

   * `hm--html-mailto-alist': Alist with mail addresses for the mailto
     alist.  The value of `user-mail-address' will also be added by the
     package to this alist.

Links To The Program Gateway
............................

   The program gateway is a special TNT site specific gateway for
starting programs out of a html page. The programs are started by a
special server, which looks in an allowed file to determine if it is
allowed to start the program. This is necessary because the programs
are running under the user id of the server. We're only allowed to
start simple display programs like man, ls and so on.

   * `hm--html-proggate-hostname:port-default': Default hostname with
     port for the proggate server.

   * `hm--html-proggate-hostname:port-alist': Alist with hostnames and
     ports for the proggate server. It contains useful alternatives.

   * `hm--html-proggate-allowed-file': The filename (with path) of the
     proggate allowed file.

Links To The Local Program Gateway
..................................

   Another TNT site specific way to start programs from a html page.
These programs are started with the id of the user on the host where the
client (browser) is running. Therefore no restriction about the allowed
programs is made. With this you can start only programs and do only
things, which you can do also without the WWW browser.

   * `hm--html-local-proggate-path-alist': Alist with directories for
     the local program gateway. Contains directories, where you can find
     programs.

URL For Forms And Image Tags
............................

   * `hm--html-url-alist': Alist with URL's for FORMS and IMAGE tags.
     The cdr of each list contains symbols, which specifies the use of
     the URL.

Marking Of Examples
...................

   The following variables are for marking the examples in the help
buffer.

   * `hm--html-help-foreground': The foreground color for highlighting
     examples.

   * `hm--html-help-background': The background color for highlighting
     examples.

   * `hm--html-help-font': The font for highlighting examples.

Templates
---------

   For inserting html template files you can customize where you keep
your templates.

   * `hm--html-template-dir': A directory with template files.  It is
     now also possible to use it as a list of directories.  Look at the
     variable `tmpl-template-dir-list' for further descriptions.  If
     this variable is set to a non-existent directory, then it defaults
     to the directory where the package is in XEmacs. This is done
     during loading the file `hm--html-configuration.el' (see Where Are All The Customization Variables Defined.).
     This may only be useful in
     XEmacs >= 19.12.

   * `hm--html-frame-template-file': File which is used as template for
     a html frame. An example is in the package *hm-html-menus*. See
     Contents.

   * `hm--html-automatic-expand-templates': Automatic expansion of
     templates. This feature needs the file `tmpl-minor-mode.el' from
     Heiko Münkel (`muenkel@tnt.uni-hannover.de'), which is distributed
     with the package hm-html-menus.

   * `hm--html-template-filter-regexp': Regexp for filtering out non
     (html) template files in a directory.

Deleting Automounter Path Prefix
--------------------------------

   * `hm--html-delete-wrong-path-prefix': If non-nil, it specifies
     path-prefixes which should be deleted in paths.  The Sun
     automounter adds a temporary prefix to the automounted directories
     (at our site the prefix is /tmp_mnt). But you can't select such a
     path if the automounter has currently not mounted the directory,
     and so you can't follow an html link which consists of such a
     path. To overcome this behaviour, you can set this variable to the
     prefix (e.g. "/tmp_mnt"). After that, the prefix should be
     stripped from the paths during the creation of the links.
     ATTENTION: This variable is used as a regular expression!  It can
     be set to a string or to a list of strings.

Automatic Insert Of Information
-------------------------------

   The `hm--html-mode' automatically inserts some useful information in
html pages. This behaviour can be changed by the following variables.

   * `hm--html-automatic-create-title-date': t => A date string will be
     inserted in the title line. This will be updated each time before
     file saving, if `hm--html-automatic-update-title-date' is also set
     to t.

   * `hm--html-automatic-update-title-date': t => The date in the title
     line will be updated before file saving.  nil => No automatic
     update of the date.

   * `hm--html-automatic-created-comment': t => A "created comment"
     line will be added.  nil => No automatic insert of a "created
     comment" line.

   * `hm--html-created-comment-prefix': The prefix text of the "created
     comment" lines. By default this is set to "Created by: ".

   * `hm--html-comment-infix': The infix (second part) of the "created
     comment" and the "changed comment" lines. By default, if this
     variable is nil, the value of `hm--html-username' or, if this
     variable is also nil, the return value of `(user-full-name)' will
     be used.  In these cases the infix looks like "Heiko Münkel, ".

     Set it to an empty string, if you don't want to have your name in
     the comments.

   * `hm--html-automatic-changed-comment': t => A "changed comment"
     line will be added before file saving.  nil => No automatic insert
     of a "changed comment" line.

   * `hm--html-changed-comment-prefix': The prefix text of the "changed
     comment" lines. By default this is set to "Changed by: ".

   * `hm--html-automatic-create-modified-line': t => Some commands will
     insert a visible "modified" line with the current date, if such a
     line does not exist already. If it already exist, the date in the
     line will be updated. Visible means, that it is not a HTML
     comment. By default it looks like the following: `<EM>Modified
     24-May-1997</EM>'

   * `hm--html-automatic-update-modified-line': t => The visible
     "modified" line will be updated with the current date before file
     saving. If such a line does not exist, nothing will be done.

   * `hm--html-modified-prefix': Prefix of the "modified" line.  By
     default it is set to `"Modified: "'.

   * `hm--html-modified-start-tag': Start tag of the modified line.  By
     default it is `<EM>'. If you change this, you'll need to change
     also `hm--html--modified-end-tag'.

   * `hm--html-modified-end-tag': End tag of the modified line.  By
     default it is `</EM>'. If you change this, you'll need to change
     also `hm--html-modified-start-tag'.

   * `hm--html-modified-insert-before': The "modified line" will be
     inserted before this string. The search will be done from the end
     to the beginning. And the "modified line" will be put at least
     before the `</HTML>' and the `</BODY>' tags.

Latin 1 Characters
------------------

   * `hm--html-bind-latin-1-char-entities': Set this to nil, if you
     don't want to use the ISO Latin 1 character entities.  This is only
     useful if `hm--html-use-old-keymap' is set to nil. It is only used
     when loading the html package the first time.

Drag And Drop
-------------

   * `hm--html-idd-create-relative-links': If t, then the
     `hm--html-idd-*' functions create relative links.  Otherwise
     absolute links are used. The idd functions are used for drag and
     drop.

   * `hm--html-idd-actions': The action list for the destination mode
     `hm--html-mode'.  Look at the description of the variable
     idd-actions.

Font Lock Keywords
------------------

   * `hm--html-font-lock-keywords-1': Subdued level highlighting for
     `hm--html-mode'.

   * `hm--html-font-lock-keywords-2': Gaudy level highlighting for
     `hm--html-mode'.

   * `hm--html-font-lock-keywords': Default expressions to highlight in
     the `hm--html-mode'.

Prefix Keys
-----------

   * `hm--html-minor-mode-prefix-key': The prefix key for the key tables
     in the minor mode `hm--html-minor-mode'.

   * `hm--html-mode-prefix-key': The prefix key for the keys in the
     major mode `hm--html-mode'.

Pulldown Menu Names
-------------------

   Perhaps you'd like to change the names to get the same menu names in
the major and in the minor modes of the `hm--html-menus' package.

   * `hm--html-mode-pulldown-menu-name': The name of the pulldown menu
     in the major html mode.

   * `hm--html-minor-mode-pulldown-menu-name': The name of the pulldown
     menu in the minor html mode.

Hook Variables
--------------

   You may use the following two variables, if you'd like to call
special functions each time the major html mode is entered or the
package is loaded.

   * `hm--html-mode-hook': This hook will be called each time
     `hm--html-mode' is invoked.

   * `hm--html-load-hook': Hook variable to execute functions after
     loading the package.

Previewing HTML Files
---------------------

   The following two variables are only used, if you preview html
documents with `Mosaic'.  There are also some other variables in
`hmtl-view.el'. See Contents. Look at that file if you have
trouble with the functions to preview the html document with `Mosaic'.

   * `html-view-mosaic-command': The command that runs `Mosaic' on your
     system.

   * `html-sigusr1-signal-value': Value for the SIGUSR1 signal on your
     system. See, usually, `/usr/include/sys/signal.h'.
          	SunOS 4.1.x	: (setq html-sigusr1-signal-value 30)
          	SunOS 5.x	: (setq html-sigusr1-signal-value 16)
          	Linux		: (setq html-sigusr1-signal-value 10))

Meta Element
------------

   * `hm--html-meta-name-alist': Alist with possible names for the name
     or http-equiv attribute of meta. Currently I know of the names
     `Expires', `Keys' and `Author'. Please send me
     (*muenkel@tnt.uni-hannover.de*) an email, if you know other
     standard html names for the meta element.

Indentation
-----------

   * `hm--html-disable-indentation': Set this to t if you want to
     disable indentation in `hm--html-mode'.  And maybe send me
     (*muenkel@tnt.uni-hannover.de*) a note why you did this.

   * `hm--html-inter-tag-indent': The indentation after a start tag.

   * `hm--html-comment-indent': The indentation of a comment.

   * `hm--html-intra-tag-indent': The indentation after the start of a
     tag.

   * `hm--html-tag-name-alist': An alist with tag names known by
     `hm--html-mode'. It is used to determine if a tag is a one element
     tag or not. In the future it should also be used to get possible
     parameters of the tag. Use lower case characters in this list!!!!
     If you have problems with the indentation of
     `:hm--html-one-or-two-element-tag' elements, then you should set
     them to either `:hm--html-one-element-tag' or
     `:hm--html-two-element-tag', depending on how you use these
     elements. In the future I'll try to implement a better indentation
     for these elements.

Add New Elements
****************

   If you'd like to add new HTML elements to this package, you should
first take a look at the file `hm--html-not-standard.el', which already
contains some non-standard elements. If you find your tags there, you
should uncomment the line `(require 'hm--html-not-standard)' in the
file `hm--html-mode.el'. There are also menu entries for these elements
in the file `hm--html-menu.el', which are commented out. Don't forget to
recompile the changed lisp files after that!

   If you don't find your new elements there, you should do the
following steps to add them:

  1. Locate a tag which is similar to the one you want to add. "Similar"
     means that it is inserted in the way you want to insert the new
     tags. Now let's assume, that you chose `<strong></strong>'.

  2. Look at the file `hm--html.el' and search the function(s) which
     inserts the similar tag(s). If the HTML element consists of only
     one tag, then there should be only one function for inserting the
     tag.  If the element consists of a start and an end tag, there are
     at least two functions. Only in some special cases, if it is
     possible to insert elements with different attribute values, are
     there more than two functions. In the case of `<strong></strong>',
     there are the two functions `hm--html-add-strong' and
     `hm--html-add-strong-to-region'.  The first one is used if no
     region is active, and the second if a region is active. The naming
     scheme of these functions is always HM-HTML-ADD-<TAGNAME> and
     HM-HTML-ADD-<TAGNAME>-TO-REGION.  <TAGNAME> is not in all cases
     the tagname. Sometimes a more human readable name is used (e.g.
     bold instead of b).

  3. To get the right indentation for the new tags you should add an
     entry for them to the variable `hm--html-tag-name-alist', which is
     defined in `hm--html-configuration.el'.  Let's assume that the new
     tagname is `foo'. The entry in `hm--html-tag-name-alist' should be
               ("foo" (:hm--html-one-element-tag t))
     if the new element consists only of one tag (`img' is such an
     element) or
               ("foo" (:hm--html-two-element-tag t))
     if the new element consists of two tags (`strong' is such an
     element) or
               ("foo" (:hm--html-one-or-two-element-tag t))
     if the new element consists of two tags, but it is permissible to
     use the start tag without its end tag (`p' is such an element).

   Now you are ready and able to insert the new tags with
     	M-x hm--html-add-foo
   and
     	M-x hm--html-add-foo-to-region

   If you want to add the new commands also to the popup menu, then you
have to take a look at `hm--html-menu.el', where all the menus are
defined. Look at `hm--html-menu-noregion-expert' and
`hm--html-menu-region-expert'. The first one is used if no region is
active, and the second if a region is active (both are only available
if the "expert menus" are used; this is an option in the pulldown
menu). You should now add an entry like
     	["Foo" hm--html-add-foo t]
   to the `hm--html-menu-noregion-expert' variable and an entry
     	["Foo" hm--html-add-foo-to-region t]
   to the `hm--html-menu-region-expert' variable (only if
`hm--html-add-foo-to-region' exists). You can do this by setting the
whole variable to a new value or by using the function
`add-menu-button'. I recommend the last method.

   If you'd like to have a key sequence for inserting the new tag as
well, take a look at `hm--html-keys.el'. There are different key tables
defined for region and no region cases and for different sorts of
elements, like anchors, frame elements (doesn't mean the Netscape
element frame) and so on. These "groups" are the same as the submenu
groups.

Use With Other Major Modes
**************************

   The package provides a minor mode called `hm--html-minor-mode',
which could be used to join the features of this package with other HTML
packages or use it's features in other major edit modes. This is
usefull, if you'd like to extend another HTML mode or if you'll write
program code, which contain HTML parts.

   Currently this is tested with the psgml-html mode, the `perl-mode'
and the `java-mode'. Please let me know if it works or not with other
packages.

   If you'd like to use the minor mode in psgml-html mode, put the
following line in your `.emacs':

          (add-hook 'html-mode-hook 'hm--html-minor-mode)

   Note: This should work only in XEmacs versions greater than 19.14
and not in 20.0. It doesn't work in other versions because the hook
variable `html-mode-hook' doesn't exist in those versions. Therefore in
those versions you must either call the minor mode by hand or change the
lisp file of the psgml-html mode.

Internal Drag And Drop
**********************

   The file `internal-drag-and-drop.el', which is shipped with
`hm--html-menus', provides a general package for internal drag and drop
in emacs. "General" means that it can be used apart from
`hm--html-mode' in any other mode.

   You can start such an action by clicking with the mouse in the source
buffer and then in the destination buffer. The action may depend on the
points where you've clicked with the mouse, on the state of the region,
the point, the mark and any other properties of the source and the
destination buffers. The actions are defined by the variable
`idd-actions', which is a buffer local variable.

Drag And Drop Customization
===========================

   Since the XEmacs 19.15 and 20.2 a special package can be used for the
customization of lisp packages. The internal drag and drop package uses
now also this feature. Therefore you can set all user variables with the
help of the Customize submenu, which can be selected in the Option menu.
If you use it, the variables will currently be saved in a special
customization file. Please look at the `NEWS' file or the info manuals
of the XEmacs to find out more about the customization package.

   The internal drag and drop functions may be used in all modes.
Therefore their general customization isn't done in
`hm--html-configuration.el'. Its variables are defined in the file
`internal-drag-and-drop.el' instead. You can set them in your `.emacs'
or in one of the other emacs init files (e.g.  `default.el'). The
following subsections describe the main customization variables.